package com.bjb.vr.common.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Locale;

/**
 * @version 1.0.0
 * @author: HuJingBo
 * @time: 2022/4/14 14:37
 */
public class LocalFileUtil {

    /**
     * 获取文件名
     */
    public static String getFileNameNoExtension(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot > -1) && (dot < (filename.length()))) {
                return filename.substring(0, dot);
            }
        }
        return filename;
    }

    /**
     * 获取文件扩展名
     */
    public static String getExtensionName(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot > -1) && (dot < (filename.length() - 1))) {
                return filename.substring(dot + 1);
            }
        }
        return filename;
    }

    /**
     * 上传文件
     *
     * @param file 文件
     * @return 返回项目路径
     */
    public static String uploadFile(MultipartFile file, String fileUploadPath) throws IOException {
        // 判断文件夹是否存在，不存在则创建
        String filePath = getFilePath(fileUploadPath);
        File fileDir = new File(filePath);
        if (!fileDir.exists()) {
            fileDir.mkdirs();
        }
        // 上传文件
        String finalFilePath = filePath + file.getOriginalFilename();
        file.transferTo(new File(finalFilePath));
        return finalFilePath;
    }

    /**
     * 删除文件
     *
     * @param filePath 文件
     * @return
     */
    public static boolean deleteFile(String filePath) {
        boolean flag = false;
        File file = new File(filePath);
        // 路径为文件且不为空则进行删除
        if (file.isFile() && file.exists()) {
            file.delete();
            flag = true;
        }
        return flag;
    }

    /**
     * 获取文件路径
     *
     * @return
     */
    private static String getFilePath(String fileUploadPath) {
        String os = System.getProperty("os.name");
        if (os.toLowerCase(Locale.ROOT).startsWith("windows")) {
            return "D:\\" + fileUploadPath;
        } else {
            return fileUploadPath;
        }
    }
}
